package com.gitee.qdbp.general.system.api.permission.service;

import java.util.List;
import com.gitee.qdbp.able.exception.ServiceException;
import com.gitee.qdbp.base.system.model.IAccount;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCascadeBean;
import com.gitee.qdbp.general.system.api.permission.model.ResourceCoreUpdate;

/**
 * 资源信息业务接口
 *
 * @author zhh
 * @version 170214
 */
public interface IResourceCoreExecutor {

    void create(ResourceCascadeBean model, IAccount me) throws ServiceException;

    void update(ResourceCoreUpdate model, IAccount me) throws ServiceException;

    /**
     * 删除
     * 
     * @param ids 待删除的资源编号
     * @param cascade 是否同时删除全部下级; 如果cascade=false却存在下级则报错
     * @param me 操作人
     * @throws ServiceException 操作失败
     */
    void delete(String scene, List<String> ids, boolean cascade, IAccount me) throws ServiceException;

    /**
     * 禁用<br>
     * 会同时禁用全部下级
     * 
     * @param ids 资源编号
     * @param me 操作人
     * @throws ServiceException 操作失败
     */
    void disable(String scene, List<String> ids, IAccount me) throws ServiceException;

    /**
     * 启用
     * 
     * @param ids 资源编号
     * @param cascade 是否同时启用全部下级
     * @param me 操作人
     * @throws ServiceException 操作失败
     */
    void enable(String scene, List<String> ids, boolean cascade, IAccount me) throws ServiceException;

    void updateIndex(String scene, String id, int sortIndex, IAccount me) throws ServiceException;

    void swapIndex(String scene, String oneId, String twoId, IAccount me) throws ServiceException;

    /** 给角色分配权限, resourceIds.size=0则清空所有权限 **/
    void distributeResources(String roleId, String scene, List<String> resourceIds, IAccount me) throws ServiceException;
}
